//  导入axios 包
import axios from 'axios'
// 1.引入json-bigint 是一个第三方包，它在把json字符串转json对象的过程中，自动识别大整数，把大整数转成一个对象来表示，这样就不会产生精度丢失的问题了
import JSONbig from 'json-bigint'
// 修改了 进行二次封装
// axios.defaults.baseURL = 'http://ttapi.research.itcast.cn/'
axios.defaults.baseURL = 'http://api-toutiao-web.itheima.net'
// 大数处理
// defaults 默认的发送请求的时候就会执行
// axios 提供了一个 API：transformResponse，它是一个数组，其中每个成员就是一个函数，作用是当数据请求回来之后，做进一步的处理
axios.defaults.transformResponse = [function (data) {
  try {
    // console.log(data)
    // data 就是response,它一般来说会是一个JSON字符串
    // 2.对获取到数据重新调用它的parse方法，把含有大数的JSON字符串，转成json对象
    // 如果这个JSON字符串中有大数,则JSONBig会自动处理
    return JSONbig.parse(data)
  } catch (err) {
    // 转换有错误就是直接返回请求的数据
    console.log(err)
    return data
  }
}]
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // config就是本次请求的配置信息。
  // 在发送请求之前做些什么
  const tokenStr = localStorage.getItem('tokenStr')
  if (tokenStr) {
    config.headers.Authorization = `Bearer ${tokenStr}`
  }
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})
//  导出
export default axios
